/********************************Copyright (c)**********************************\
**
**                   (c) Copyright 2019, Main, China, QD.
**                           All Rights Reserved
**
**                                By(wo4fisher)
**                           http://www.wo4fisher.com
**
**----------------------------------文件信息------------------------------------
** 文件名称: buzzer.h
** 创建人员: wht
** 创建日期: 2019-06-07
** 文档描述:
**
**----------------------------------版本信息------------------------------------
** 版本代号: V0.1
** 版本说明: 初始版本
**
**------------------------------------------------------------------------------
\********************************End of Head************************************/

#ifndef __HGUS_H_
#define __HGUS_H_

#include "STC8Axx.h"
#include <INTRINS.H>
#include "stdio.h"
#include "common.h"
#include "zf_uart.h"

#define REGMODE 1
#define VARMODE 0

#define RECVOVERTIME   5  //MS  实际要远小于5ms

#define HGUS_UART UART_3

#define HGUS_LED_SET 0X01 //W BYTE 0X00-0X40
#define HGUS_LED_STA 0X1E //R/W 读返回led亮度
#define HGUS_BEEP 0X02 //W 蜂鸣器鸣叫 单位10ms
#define HGUS_PIC_ID 0x03  //R/W 读 返回当前页面ID ；写  切换到指定页面;应答：地址+长度+数据
#define HGUS_RESET  0XEE  //0xee-0xEF  写入0x5AA5，触发HGUS复位一次
#define HGUS_RTC_CMD_ADJ 0X1F //0x5A表示用户串口改写了RTC数据， HGUS修改RTC后清零。
/* 读取日历 （ YY:MM:DD:WW:HH:MM:SS） : 5A A5 03 81 20 07 */
/* 读取时间（ HH:MM:SS） : 5A A5 03 81 24 03 */
/* 把RTC设置为2013-11-08 18:56:00 ：   5A A5 0A 80 1F 5A 13 11 08 00 18 56 00 */
#define HGUS_RTC_NOW  0X20   //可读可写  YY:MM:DD:WW:HH:MM:SS
/* 物理按键触发  0x4F 下发键码0xF1 : 5A A5 03 80 4F F1*/
#define HGUS_KEY_CODE 0X4F //用户键码，用于触发0x13触控文件； 0x01-0xFF， 0x00表示无效。


/* 字库读取操作  0x40-0x48  略...*/
/* 128段音乐播放 0x50 0x53  略...*/
/* 数据库读写 0x56-0x5e     略...*/

//寄存器  字节寻址，256字节，地址范围0x00--0xFF。
#define HGUS_CMD_WRITE_BYRE   0X80 //写单个寄存器  地址范围0x00--0xFF
#define HGUS_CMD_READ_BYRE  0X81 //读多个寄存器  地址范围0x00--0xFF
//变量存储器，字寻址，，数量28k字地址范围0x0000--0x6FFF。
#define HGUS_CMD_WRITE_VAR   0X82 //写多个变量值  地址范围0x0000--0x6FFF
#define HGUS_CMD_READ_VAR    0X83 //读取多个变量的值 地址范围0x0000--0x6FFF，数量0x00--0x7F；应答：地址+长度+数据
//写曲线缓存  CH_MODE(BYTE)+DATA0(WORD)+...+DATAn
//CH_Mode=0x83(10000011B),表示后续数据格式为(通道 0+通道 1+通道 7)+…+(通道 0+通道1+通道 7)
//HGUS 屏有一个 8K Word，可以存储 8 条曲线趋势图的曲线缓冲区,数据格式uint16
#define HGUS_WRITE_CURVE   0X84

/*  HGUS 使用笔记
1. demo 开机动画，<图片动画>控件放在第一页，设置属性：起始图片位置，终止图片位置，时间间隔
2.导航页，<基础触控>控件，设置属性：页面切换，选择切换到的页即可
3.切换图标效果（0/1）：<增量调节>+<变量图标>组合使用，
4.<按键返回>：使用按键设置变量的值，适合值少的情况。多的话，用增量调节。  变量显示用 <数据变量>
5.<数据录入>控件，可以唤醒数字键盘，使用键盘输入数据。 变量显示用 <数据变量>
6.拖动/滑块：<拖动调节>设置拖动区域，关联变量（实际测试没什么卵用，直接使用滑块位置就行）；<滑块位置>关联变量、滑块图标，对应刻度值即可。
 */

extern volatile bit recvDoneFlag;
extern volatile uint8 xdata recvBuf[25];
extern volatile uint8 xdata sendBuf[25];

static uint8 HGUS_SendBuf[] = {0x5A, 0xA5, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00};

int8 HGUS_ReadByte(uint8 addr );
int16 HGUS_ReadWord(uint8 addr );
void HGUS_WriteByte(uint8 addr , int8 data8);
void HGUS_WriteWord(uint8 addr , int16 data16);
int16 HGUS_ReadVarWord(uint16 addr );
void HGUS_WriteVarWord(uint16 addr, int16 data16);

#endif


/********************************End of File************************************/